
class Tree
{
    idName = 'id';
    pidName = 'pid';
    subName = 'sub';
    data = [];
    levelName = 'level';

    constructor(data){
        this.data = data;
    }

    data(data = [])
    {
        this.data = data;
        return this;
    }

    getData()
    {
        return this.data;
    }

    getTree()
    {
        //console.log(this.data[2])
        return this.tree(this.data);
    }

    tree(data, pid = 0)
    {
        let result = [];
        try {
            data.forEach (item =>{
                if(item.pid === pid) {
                    let sub = this.tree(data, item.id);
                    item.sub = sub;
                    result.push(item);
                }
            });
        } catch (error) {
            return error;
        }

        return result;
    }

    // treeList(data, pid = 0, level = 0, tree = [])
    // {
    //     data.forEach (item =>{
    //         if (item.pid == pid) {
    //             item.level = level;
    //             tree.push(item);
    //             this.treeList(data, item.id, level + 1, tree);
    //         }
    //     });
    //     return tree;
    // }

    // getTreeList()
    // {
    //     return this.treeList(this.data);
    // }

    // getTreeListCheckLeaf(name = 'isLeaf')
    // {
    //     let data = this.getTreeList();
    //     for(let item in da)
    //     data.forEach (item =>{
    //         data.forEach (elem) {
    //             $data[$k][$name] = true;
    //             if ($v[$this->idName] === $vv[$this->pidName]) {
    //                 $data[$k][$name] = false;
    //                 break;
    //             }
    //         }
    //     }
    //     return $data;
    // }

    // $data = $this->getTreeList();
    // foreach ($data as $k => $v) {
    //     foreach ($data as $vv) {
    //         $data[$k][$name] = true;
    //         if ($v[$this->idName] === $vv[$this->pidName]) {
    //             $data[$k][$name] = false;
    //             break;
    //         }
    //     }
    // }
    // return $data;
};

module.exports = Tree;
